\section{Related work}

A survey of Datalog engines can be found in~\cite{Maier-book18}.  Here
we focus on incremental evaluation; a survey of incremental evaluation
is~\cite{gupta-deb95}.  Notable algorithms include
Delete-Rederive~\cite{Gupta-sigmod93}, FOIES~\cite{dong-dbpl94}.
Saha~\cite{saha-iclp03} provides an algorithm for tabled logic
programs.  The Backward-Forward algorithm~\cite{motik-aaai15} improves
DRed under some circumstances.  IncA~\cite{IncA,Szabo-ase016} is a
Datalog dialect for incremental program analysis; it introduces the
DRed$_{\mbox{L}}$ algorithm.  Another class of algorithms use
provenance to perform incremental computation~\cite{liu-icde09}.
Several recent paper describe systems that use incremental evaluation
for relational computation models:~\cite{ahmad-vldb12,zhao-icmd17}.

The only other incremental Datalog engine that we are aware
of is a LogiQL~\cite{Green-pods15}, a commercial product of
LogicBlox~\cite{Aref-sigmod15}.  Unfortunately there is no published
data about the performance of the LogicBlox incremental engine.

DDlog is built on top of Differential
Dataflow~\cite{differential-dataflow}; several declarative incremental
query engines generalizing Datalog were built on top of
Differential Dataflow~\cite{timely-dataflow,differential-dataflow-paper}.  Some of the
DDlog features were inspired by .Net LINQ~\cite{meijer-dpcool03}.
